In the field of Internet communications, performance is a key aspect impacting web application usability and end-user experience. Users expect an almost immediate response from web sites. For example, it has been shown that even a three second delay leads to customer dissatisfaction and complaints. A typical web application operates via Internet, intranet, or other computer network that includes multiple interconnected devices located on network nodes (nodes), and has at least one web server and one client. The web server serves web pages in response to client requests, and the client presents them in a web browser to a requesting end user.
Modern web pages are usually composed of a base markup page (e.g., HyperText Markup Language (HTML) page), and multiple supporting resources and/or objects (e.g., images, CSS, JavaScript, JBoss™ code, etc.). Each base markup page has a web address represented in the form of a Uniform Resource Locator (URL). Resources can be of many different types, such as scripts (e.g. JavaScript), data resources (e.g. XML or other text-based data), style sheets, images and other page components. There are many image formats such as GIF, PNG, and JPEG. For a given HTML page, the number of different supporting resources may be in the range of tens or even hundreds.
For each of the resource of a web page, a network connection is established between a client (e.g., a web browser) and a web server. Typically, this connection uses Transmission Control Protocol (TCP) to establish a reliable path through the network. However, the creation of a TCP connection is an expensive operation for network hardware (e.g. switches and routers) and takes a relatively long time. For small files, creating a TCP connection may take longer than the data transfer of the file itself. Also, for each of the created TCP connections, there is an associated HyperText Transfer Protocol (HTTP) request and response that occurs. The HTTP request and response, in addition to taking additional time, also takes additional bandwidth because the meta-data of the HTTP request and response (e.g., “HTTP headers”) is also transferred for every file.